﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Nb.Common
{
    //类库内部使用的日志组件（不依赖任何外部组件，默认System.Diagnostics.Trace，支持运行时替换）
    /// <summary>
    /// 类库内部使用的日志组件
    /// （不依赖任何外部组件，默认System.Diagnostics.Trace，支持运行时替换）
    /// </summary>
    public class UtilsLogger
    {
        /// <summary>
        /// 写入日志
        /// </summary>
        /// <param name="message"></param>
        public static void LogMessage(string message)
        {
            defaultLogAction.Invoke(message);
        }

        /// <summary>
        /// 重新设置日志打印方式
        /// </summary>
        /// <param name="action"></param>
        public static void SetLogFunc(Action<string> action)
        {
            if (action != null)
            {
                defaultLogAction = action;
            }
        }


        private static Action<string> defaultLogAction = new Action<string>(TraceMessage);
        private static void TraceMessage(string message)
        {
            if (message != null && message.Contains("\r\n"))
            {
                System.Diagnostics.Trace.Write("[Nb].[UtilsLogger] => " + message);
            }
            else
            {
                System.Diagnostics.Trace.WriteLine("[Nb].[UtilsLogger] => " + message);
            }
        }
    }
}
